package com.atguigu.code;


import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class CodeGet {

    public static void main(String[] args) {

        AutoGenerator mpg = new AutoGenerator();

        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");

//1、  项目文件夹的路径
        gc.setOutputDir("C:\\code\\GitCode\\yygh_parent\\service\\service_user"+"/src/main/java");



        gc.setServiceName("%sService");	//去掉Service接口的首字母I
//2、作者
        gc.setAuthor("xueyoupeng");
        gc.setOpen(false);
        mpg.setGlobalConfig(gc);

        DataSourceConfig dsc = new DataSourceConfig();
//3、数据源信息
        dsc.setUrl("jdbc:mysql://localhost:3306/yygh_user");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("xyp0317");
//        spring:
//        datasource:
//        driver-class-name: com.mysql.cj.jdbc.Driver
//        url: jdbc:mysql://localhost:3306/guigu-auth
//        username: root
//        password: xyp0317


        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);

        PackageConfig pc = new PackageConfig();

//4、parent+moduleName = 基础包名（启动类包名）
        pc.setModuleName("cmn"); //模块名
        pc.setParent("com.atguigu.yygh");

//5、包名
        pc.setController("controller");
        pc.setEntity("entity");
        pc.setService("service");
        pc.setMapper("mapper");



        mpg.setPackageInfo(pc);

        StrategyConfig strategy = new StrategyConfig();

//6、指定表名（为那个表生成代码）
        strategy.setInclude("user_info");



        strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
        strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作
        strategy.setRestControllerStyle(true); //restful api风格控制器
        strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符
        mpg.setStrategy(strategy);


        mpg.execute();
    }
}
